package mystudy
// 数组
import "fmt"
import "math/rand"


func PrintlnQP(arr []int){
	// 这里传递的是切片类型
	for i, v := range arr{
		fmt.Println(i, v)
	}
}
func PrintlnArray(arr [2]int){
	// 这里传递的是切片类型
	for i, v := range arr{
		fmt.Println(i, v)
	}
}


func DemoArray(){
	// 定义一个数组 变量名 := [个数] 类型
	var scores [5]int
	for i:=0; i < len(scores); i++ {
		scores[i] = rand.Intn(100)
		fmt.Println(scores[i])
	}
	// var countArray [5]int = [5]int{1, 2,3,4,5}
	var countArray = [5]int{1, 2,3,4}
	for i:=0; i < len(countArray); i++{
		fmt.Println(countArray[i])
	}
	sum := 0
	for index, value := range scores {
		fmt.Println(index, value)
		sum += value
	}
	
	fmt.Println("班级总成绩:", sum, "班级平均分：", float32(sum) / float32(len(scores)))
	// 定义数组方式2 score := [个数]int{}
	scores2 := [1]int{}
	fmt.Println(scores2[0])
	// 定义数组的时候提供默认值
	scores3 := [2] int8 {12, 99}
	fmt.Println(scores3)
	println("println打印scores3地址：", &scores3)
	fmt.Println("fmt.Println打印scores3地址：", &scores3)
	fmt.Printf("arr的首个元素地址： %p\n", &scores3[0])
	fmt.Printf("arr的第二个元素地址： %p\n", &scores3[1])
    fmt.Printf("arr的地址： %p\n", &scores3)
	// 用户输入分数
	fmt.Println("---学生成绩管理系统---")
	scores6 := [6] int {}
	for i, _:= range scores6{
		fmt.Print("输入学生", i+1, "的分数：")
		fmt.Scanln(&scores6[i])
	}
	for i, value := range scores6{
		fmt.Println("第", i+1 , "个学生的成绩", value)
	}
	fmt.Println("打印长度")
	fmt.Println(len("小名111aaa"))
	fmt.Println("------给下标自动赋值------")
	var indexArray1 = [...]int{ 2:66,19, 0:88, 6:99}
	fmt.Println(indexArray1)
	fmt.Printf("%T\n", indexArray1)
	fmt.Println("------数组是数值类型------")
	var myarr1 [3]int = [3]int{2, 3, 1}
	var myarr2 [3]int
	myarr2 = myarr1
	fmt.Println(myarr1, myarr2)
	myarr1[1] = 12
	fmt.Println(myarr1, myarr2)
	var myarr3 *[3]int
	myarr3 = &myarr1
	myarr3[0] = 100
	fmt.Println(myarr1)
	// 二维数组
	fmt.Println("------二维数组------")
	var myarry4 [2][3]int = [2][3]int{{1,2,3}}
	var myarry5 [3][5]int
	fmt.Println(myarry5)
	fmt.Println(myarry4)
	// 数组的遍历
	// 遍历方式1
	for i:=0; i<len(myarry4); i++{
		for k:=0; k<len(myarry4[i]);k++{
			fmt.Printf("arr[%v][%v]=%v ", i, k, myarry4[i][k])
		}
		println()
	}
	// 遍历方式2使用range
	for i1, arr4:=range myarry4{
		for i2, value := range arr4{
			fmt.Printf("arr[%v][%v]=%v ", i1, i2, value)
		}
		println()
	}
	myarry6 := [...][2]int{{},{1,2}}
	fmt.Println(myarry6)
	myarry7 := [3][3]int{}
	fmt.Println(myarry7)
	
}